package org.batatasframework.support.event;

import org.batatasframework.support.definition.TableDefinition;

/**
 * <pre>
 * 每执行一次查询的时候的请求对象
 * 
 * 这里包含的需要查询的查询条件，返回的字段，是否需要分页，分页的信息等
 * 
 * 执行后返回{@link SearchableResponse}
 * 
 * 上下文的{@link TableDefinition}对象是决定被查询的对应是怎么样的，如：直接解析数据库表、通过文件定义的表、通过属性定义的表
 * 而{@code SearchRequest}则是决定某一个请求是如何来查询的，如：数据查询、数据的统计等
 * 所以{@code SearchRequest}不能由{@link TableDefinition}对象来创建
 * 
 * 在执行查询的过程中，需要加入某一些的限制，如，只查询某个市的，或只查询某些指定类别的
 * </pre>
 * <pre>
 * 参考例子：
 * SearchableRequest searchableRequest = new StandardSearchableRequest(...);
 * SearchableHandler searchableHandler = searchablePlatform.buildSearchableHandler(searchableRequest);
 * SearchableInputStream searchableInputStream = searchableRequest.getStream();
 * searchableHandler.execute(searchableInputStream);
 * 
 * ObjectResultWriter jsonWriter = new ObjectResultWriter(searchableInputStream);
 * jsonWriter.flush();
 * </pre>
 * @author jackson
 * @see SearchableResponse
 */
public interface SearchableHttpRequest extends SearchableRequest, HttpRequestAccessor{

//	/**
//	 * 处理后的响应对象，应该是由请求的对象来决定的，如：查询的请求、统计的请求等
//	 */
//	SearchableInputStream getStream() throws Exception;
	
}
